package sisgeroupas.dao;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import sisgeroupas.factory.ConnectionBD;
import sisgeroupas.model.ModelCliente;


/**
 *
 * @author root
 */
public class ClienteDao
{
    private Connection connection;
   /*int id;
   String nome;
   String sexo;
   String dataNascimento;
    */
    public ClienteDao()
    {
        this.connection = new ConnectionBD().getConnection();
    }
    public void inserir(ModelCliente cliente)
    {
        String sql = "INSERT INTO cliente(nome,dataNascimento,sexo,nomeMae,cpf ,estado,cidade,bairro,rua,numero,complemento) VALUES(?,?,?,?,?,?,?,?,?,?,?)";
        try
        {
            PreparedStatement stmt = connection.prepareStatement(sql);
            
            stmt.setString(1,cliente.getNome()); 
            stmt.setString(2,cliente.getDataNascimento());
            stmt.setString(3,cliente.getSexo()); 
            stmt.setString(4,cliente.getNomeMae());
            stmt.setString(5,cliente.getCpf());
            stmt.setString(6,cliente.getEstado());
            stmt.setString(7,cliente.getCidade());
            stmt.setString(8,cliente.getBairro());
            stmt.setString(9,cliente.getRua());
            stmt.setString(10,cliente.getNumero());
            stmt.setString(11,cliente.getComplemento());
                       
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u.getMessage());  
            throw new RuntimeException(u);
            
        }
    }
        
     
    public void apagar(ModelCliente cliente)
     {
        String sql = "DELETE FROM cliente WHERE id = ?";
        //JOptionPane.showMessageDialog(null,"Executou sql");
        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = connection.prepareStatement(sql);
            //JOptionPane.showMessageDialog(null,"Executou sql");
            
            stmt.setInt(1, cliente.getId());
                                 
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u);
        }
    }
    
     public ArrayList<ModelCliente> pesquisar(ModelCliente  cliente)
     {
         
         ArrayList<ModelCliente> resultados = new ArrayList<ModelCliente>();
         
        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM cliente where nome like "+"'%" + cliente.getNome() + "%'");
            
            //Aqui coloca apenas uma variavel que usou para pesquisar ou 2 se for o caso
            //stmt.setString(1, cadastro.getNome());
            
            ResultSet rs= stmt.executeQuery();;
            
            while (rs.next()) {  
            ModelCliente temp = new ModelCliente();  
            // pega todos os atributos da cliente
            temp.setId(rs.getInt("id"));
            temp.setNome(rs.getString("nome"));
            temp.setDataNascimento(rs.getString("dataNascimento"));
            temp.setSexo(rs.getString("sexo")); 
            temp.setNomeMae(rs.getString("nomeMae"));
            temp.setCpf(rs.getString("cpf"));
            temp.setEstado(rs.getString("estado"));
            temp.setCidade(rs.getString("cidade"));
            temp.setBairro(rs.getString("bairro"));
            temp.setRua(rs.getString("rua"));
            temp.setNumero(rs.getString("numero"));
            temp.setComplemento(rs.getString("complemento"));  
            resultados.add(temp);
            
        }
                                 
            stmt.execute();
            stmt.close();
            rs.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u.getMessage());
        }
        return resultados;
    }
     
     
     public ModelCliente pesquisar(int id)
    {   
        ModelCliente resultado = new ModelCliente();
         
        try
        {
            //JOptionPane.showMessageDialog(null,"Entrou no try");
            PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM cliente where id="+id);
            
            //Aqui coloca apenas uma variavel que usou para pesquisar ou 2 se for o caso
            //stmt.setString(1, cadastro.getNome());
            
            ResultSet rs= stmt.executeQuery();;
            
            while (rs.next()) {  
            ModelCliente temp = new ModelCliente();  
            // pega todos os atributos da cliente
            temp.setId(rs.getInt("id"));
            temp.setNome(rs.getString("nome"));
            temp.setDataNascimento(rs.getString("dataNascimento"));
            temp.setSexo(rs.getString("sexo")); 
            temp.setNomeMae(rs.getString("nomeMae"));
            temp.setCpf(rs.getString("cpf"));
            temp.setEstado(rs.getString("estado"));
            temp.setCidade(rs.getString("cidade"));
            temp.setBairro(rs.getString("bairro"));
            temp.setRua(rs.getString("rua"));
            temp.setNumero(rs.getString("numero"));
            temp.setComplemento(rs.getString("complemento"));  
            resultado=(temp);
            
        }
                                 
            stmt.execute();
            stmt.close();
            rs.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u.getMessage());
        }
        return resultado;
        
    }
     public void atualizar(ModelCliente cliente)
    {
        
        String sql = "UPDATE  cliente set nome=?,dataNascimento=?, sexo=?,nomeMae=?,cpf=? , estado=?, cidade=?, bairro=?, rua=?,numero=?, complemento=? where id=? ";
        try
        {
            PreparedStatement stmt = connection.prepareStatement(sql);
            
            
            
            stmt.setString(1,cliente.getNome());
            stmt.setString(2,cliente.getDataNascimento());
            stmt.setString(3,cliente.getSexo());
            stmt.setString(4,cliente.getNomeMae());
            stmt.setString(5,cliente.getCpf());
            stmt.setString(6,cliente.getEstado());
            stmt.setString(7,cliente.getCidade());
            stmt.setString(8,cliente.getBairro());
            stmt.setString(9,cliente.getRua());
            stmt.setString(10,cliente.getNumero());
            stmt.setString(11,cliente.getComplemento());
            stmt.setInt(12,cliente.getId());
            
            stmt.execute();
            stmt.close();
        }
        catch(SQLException u)
        {
            JOptionPane.showMessageDialog(null,"Erro SQL: " + u);  
            throw new RuntimeException(u);
            //JOptionPane.showMessageDialog(null, "Erro SQL:" + u);
        }
    }
}